package shujia.day17.udpdemo2;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;

/*
无论是UDP编程还是TCP编程，每个端都需要创建对应的Socket对象

    1:建立udp的socket服务
        UDP协议发送端的Socket类叫做：DatagramSocket
    2:将要发送的数据封装成数据包
    3:通过udp的socket服务,将数据包发送出
    4:关闭资源

    改进：一直发送数据，数据是手动输入的。
 */
public class SendDemo1 {
    public static void main(String[] args) throws Exception{
        // DatagramSocket() 构造数据报套接字并将其绑定到本地主机上的任何可用端口。
        DatagramSocket ds = new DatagramSocket();
        //创建键盘录入对象
        Scanner sc = new Scanner(System.in);

        while (true){
            System.out.println("请输入要发送的内容：");
            String info = sc.next();
            if("exit".equals(info)){
                System.out.println("----------------------");
                System.out.println("发送端已关闭........");
                break;
            }

            //将要发送的数据封装成数据包 DatagramPacket
            //DatagramPacket(byte[] buf, int length, InetAddress address, int port)
            //构造用于发送长度的分组的数据报包 length指定主机上到指定的端口号。
            byte[] bytes = info.getBytes(); // 发送数据的字节数组形式
            int length = bytes.length; // 数据内容字节数组的长度
            InetAddress address = InetAddress.getByName("192.168.1.20"); // 目标ip地址的InetAddress对象
            int port = 10086;
            DatagramPacket datagramPacket = new DatagramPacket(bytes, length, address, port);

            //3:通过udp的socket服务,将数据包发送出
            //DatagramPacket
            ds.send(datagramPacket);

        }

        // 关闭资源
        ds.close();
    }
}
